home *** CD-ROM | disk | FTP | other *** search
/ Aminet 3 / Aminet 3 - July 1994.iso / Aminet / util / cdity / yak158src.lha / misc_Window.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-08  |  10.9 KB  |  330 lines

  1.  
  2. /*
  3.  *  Source machine generated by GadToolsBox V2.0b
  4.  *  which is (c) Copyright 1991-1993 Jaba Development
  5.  *
  6.  *  GUI Designed by : Martin W Scott and GaĆ«l Marziou
  7.  */
  8.  
  9.  
  10.  
  11.  
  12. #include <exec/types.h>
  13. #include <intuition/intuition.h>
  14. #include <intuition/classes.h>
  15. #include <intuition/classusr.h>
  16. #include <intuition/imageclass.h>
  17. #include <intuition/gadgetclass.h>
  18. #include <intuition/intuitionbase.h>
  19. #include <libraries/gadtools.h>
  20. #include <graphics/displayinfo.h>
  21. #include <graphics/gfxbase.h>
  22. #include <proto/exec.h>
  23. #include <proto/intuition.h>
  24. #include <proto/gadtools.h>
  25. #include <proto/graphics.h>
  26. #include <proto/locale.h>
  27. #include <proto/utility.h>
  28. #include <string.h>
  29.  
  30.  
  31. #include "version.h"
  32. #include "hotkey_types.h"
  33. #include "yak.h"
  34. #include "gui.h"
  35.  
  36. #define CATCOMP_NUMBERS
  37. #include "locale/yak_locale_strings.h"
  38.  
  39. extern struct Catalog    *Catalog;
  40. extern struct DosLibrary *DOSBase;
  41.  
  42. extern LONG (*HandleIDCMP)(void);
  43.  
  44. struct Window   *MiscWnd = NULL;
  45. struct Gadget   *MiscGList = NULL;
  46. struct Gadget   *MiscGadgets[Misc_CNT];
  47. UWORD            MiscLeft = 0;
  48. UWORD            MiscWidth = 443;
  49. UWORD            MiscHeight = 92;
  50. UBYTE           *MiscWdt = NULL;
  51.  
  52.  
  53. UWORD MiscGTypes[] = {
  54.         INTEGER_KIND,
  55.         INTEGER_KIND,
  56.         BUTTON_KIND,
  57.         CHECKBOX_KIND,
  58.         CHECKBOX_KIND,
  59.         CHECKBOX_KIND
  60. };
  61.  
  62. struct NewGadget MiscNGad[] = {
  63.         240,4,60,14,NULL,NULL,GD_ClickVol         ,PLACETEXT_LEFT  ,NULL ,NULL,
  64.         240,18,60,14,NULL,NULL,GD_AutoPointDelay  ,PLACETEXT_LEFT  ,NULL ,NULL,
  65.         170,75,100,13,NULL,NULL,GD_Return2        ,PLACETEXT_IN    ,NULL ,NULL,
  66.         227,42,26,11,NULL,NULL,GD_BlackBorderCheck,PLACETEXT_RIGHT ,NULL ,NULL,
  67.           7,42,26,11,NULL,NULL,GD_WildStarCheck   ,PLACETEXT_RIGHT ,NULL ,NULL,
  68.           7,54,26,11,NULL,NULL,GD_NoClickCheck    ,PLACETEXT_RIGHT ,NULL ,NULL
  69. };
  70.  
  71. VOID InitMiscNGad (VOID)
  72. {
  73.         MiscNGad[GD_ClickVol].ng_GadgetText = getString(CLICKVOLUME_STRING);
  74.         MiscNGad[GD_AutoPointDelay].ng_GadgetText = getString(AUTOPOINT_DELAY_STRING);
  75.         MiscNGad[GD_Return2].ng_GadgetText = getString(OK_STRING);
  76.         MiscNGad[GD_BlackBorderCheck].ng_GadgetText = getString(BLACK_BORDER);
  77.         MiscNGad[GD_WildStarCheck].ng_GadgetText = getString(WILD_STAR_STRING);
  78.         MiscNGad[GD_NoClickCheck].ng_GadgetText = getString(NOCLICK_STRING);
  79. }
  80.  
  81.  
  82. ULONG MiscGTags[] = {
  83.         (GTIN_Number),0,(GTIN_MaxChars),4,(STRINGA_Justification),STRINGRIGHT,(TAG_DONE),
  84.         (GTIN_Number),0,(GTIN_MaxChars),4,(STRINGA_Justification),STRINGRIGHT,(TAG_DONE),
  85.         (TAG_DONE),
  86.         (GTCB_Scaled),TRUE,(TAG_DONE),
  87.         (GTCB_Scaled),TRUE,(TAG_DONE),
  88.         (GTCB_Scaled),TRUE,(TAG_DONE)
  89. };
  90.  
  91.  
  92.  
  93. VOID
  94. MiscRender()
  95. {
  96.     UWORD X,Width;
  97.  
  98.     ComputeFont(MiscWidth,MiscHeight);
  99.  
  100.     Width = ComputeX( 440 );
  101.     X = OffX + ComputeX( 2 ) ;
  102.  
  103.     DrawBevelBox( MiscWnd->RPort, X,
  104.                  OffY + ComputeY( 72 ),
  105.                  Width,
  106.                  ComputeY( 19 ),
  107.                  GT_VisualInfo, VisualInfo, TAG_DONE );
  108.     DrawBevelBox( MiscWnd->RPort,  X,
  109.                  OffY + ComputeY( 38 ),
  110.                  Width,
  111.                  ComputeY( 19 ),
  112.                  ComputeY( 34 ),
  113.                  GT_VisualInfo, VisualInfo, TAG_DONE );
  114.     DrawBevelBox( MiscWnd->RPort, X,
  115.                  OffY + ComputeY( 1 ),
  116.                  Width,
  117.                  ComputeY( 19 ),
  118.                  ComputeY( 37 ),
  119.                  GT_VisualInfo, VisualInfo, TAG_DONE );
  120. }
  121.  
  122.  
  123.  
  124.  
  125. int
  126. OpenMiscWindow()
  127. {
  128.         struct NewGadget        ng;
  129.         struct Gadget   *g;
  130.         UWORD           lc,tc;
  131.         UWORD           wleft = MiscLeft,wtop = WindowTop,ww,wh;
  132.  
  133.         ComputeFont(MiscWidth,MiscHeight);
  134.  
  135.         ww = ComputeX(MiscWidth);
  136.         wh = ComputeY(MiscHeight);
  137.  
  138.         if ((wleft +ww +OffX +Scr->WBorRight) > Scr->Width) wleft = Scr->Width -ww;
  139.         if ((wtop +wh +OffY +Scr->WBorBottom) > Scr->Height) wtop = Scr->Height -wh;
  140.  
  141.         if (! (g = CreateContext(&MiscGList))) 
  142.         {
  143.                 return(1L);
  144.         }
  145.  
  146.         for(lc = 0,tc = 0; lc < Misc_CNT; lc++) 
  147.         {
  148.  
  149.                 CopyMem((char *)&MiscNGad[ lc ],(char *)&ng,(long)sizeof(struct NewGadget));
  150.  
  151.                 ng.ng_VisualInfo = VisualInfo;
  152.                 ng.ng_TextAttr   = Font;
  153.                 ng.ng_LeftEdge   = OffX +ComputeX(ng.ng_LeftEdge);
  154.                 ng.ng_TopEdge    = OffY +ComputeY(ng.ng_TopEdge);
  155.                 ng.ng_Width      = ComputeX(ng.ng_Width);
  156.                 ng.ng_Height     = ComputeY(ng.ng_Height);
  157.  
  158.                 MiscGadgets[ lc ] = g = CreateGadgetA((ULONG)MiscGTypes[ lc ],g,&ng,(struct TagItem *) &MiscGTags[ tc ]);
  159.  
  160.                 while(MiscGTags[ tc ]) tc += 2;
  161.                 tc++;
  162.  
  163.                 if (NOT g)
  164.                         return(2L);
  165.         }
  166.     if (NOT (MiscWnd = OpenWindowTags(NULL,
  167.                         WA_Left,         wleft,
  168.                         WA_Top,          wtop,
  169.                         WA_Width,        ww +OffX +Scr->WBorRight,
  170.                         WA_Height,       wh +OffY +Scr->WBorBottom,
  171.                         WA_IDCMP,        LISTVIEWIDCMP|STRINGIDCMP|CYCLEIDCMP|BUTTONIDCMP|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
  172.                         WA_Flags,        WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH,
  173.                         WA_Gadgets,      MiscGList,
  174.                         WA_Title,        MiscWdt,
  175.                         WA_ScreenTitle,  getString(COPYRIGHT_STRING),
  176.                         WA_PubScreen,    TRUE,
  177.                         WA_PubScreenName,PubScreenName,
  178.                         TAG_DONE)))
  179.     return(4L);
  180.  
  181.     GT_RefreshWindow(MiscWnd,NULL);
  182.  
  183.     MiscRender();
  184.  
  185.     return(0L);
  186. }
  187.  
  188.  
  189.  
  190.  
  191.  
  192. VOID
  193. CloseMiscWindow()
  194. {
  195.     CloseOneWindow(MiscWnd,NULL,MiscGList);
  196.     MiscWnd = NULL;
  197. }
  198.  
  199.  
  200.  
  201. /* initialise all gadgets of Misc window */
  202. static void
  203. InitMiscGadgets(void)
  204. {
  205.         InitToggleGadgets(MISC_WINDOW);
  206.         InitWindowGadget(GDX_ClickVol, GTIN_Number, click_volume, MISC_WINDOW);
  207.         InitWindowGadget(GDX_AutoPointDelay, GTIN_Number, autopoint_delay, MISC_WINDOW);
  208. }
  209.  
  210.  
  211. /* handle Misc window events */
  212. LONG
  213. HandleMiscIDCMP(void)
  214. {
  215.         struct IntuiMessage *msg;
  216.         struct Gadget   *gadget;
  217.         ULONG           class;
  218.         UWORD           code;
  219.         LONG            num;
  220.  
  221.         while (msg = GT_GetIMsg(MiscWnd->UserPort))
  222.         {
  223.                 class = msg->Class;
  224.                 code = msg->Code;
  225.                 gadget = (struct Gadget *)msg->IAddress;
  226.                 GT_ReplyIMsg(msg);
  227.  
  228.                 switch (class)
  229.                 {
  230.                   case CLOSEWINDOW:
  231.                         HideInterface();
  232.                         return ROOT_OKAY;
  233.  
  234.                   case GADGETUP:
  235.                   case GADGETDOWN:
  236.                         switch (gadget->GadgetID)
  237.                         {
  238.                           case GD_Return2:
  239.                                 UpdateWindowsPosition();
  240.                                 CloseMiscWindow();
  241.                                 if (!ShowRootWindow())
  242.                                         PostError(getString(Couldnt_open_other_window_ERR));
  243.                                 return ROOT_OKAY;
  244.  
  245.                           case GD_ClickVol:
  246.                                 num = GetNumber(gadget);
  247.                                                                 if (num<0)
  248.                                                                 {
  249.                                                                         num = 0;
  250.                                                                 }
  251.                                                                 else
  252.                                                                 {
  253.                                                                         if (num>64)
  254.                                                                         {
  255.                                                                                 num = 64;
  256.                                                                         }
  257.                                                                 }
  258.                                                                 click_volume = num;
  259.                                                                 InitWindowGadget(GDX_ClickVol, GTIN_Number, click_volume, MISC_WINDOW);
  260.                                                                 break;
  261.  
  262.                           case GD_AutoPointDelay:
  263.                                 num = GetNumber(gadget);
  264.                                                                 if (num<0)
  265.                                                                 {
  266.                                                                         num = 0;
  267.                                                                 }
  268.                                                                 else
  269.                                                                 {
  270.                                                                         if (num>5)
  271.                                                                         {
  272.                                                                                 num = 5;
  273.                                                                         }
  274.                                                                 }
  275.                                                                 autopoint_delay = num;
  276.                                                                 InitWindowGadget(GDX_AutoPointDelay, GTIN_Number, autopoint_delay, MISC_WINDOW);
  277.                                 break;
  278.  
  279.                           case GD_BlackBorderCheck:
  280.                                 blackborder ^= TRUE;
  281.                                 ToggleBlackBorder(blackborder);
  282.                                 break;
  283.         
  284.                           case GD_WildStarCheck: /* toggle */
  285.                                 wildstar ^= TRUE;
  286.                                 if (wildstar) WILDSTARON; else WILDSTAROFF;
  287.                                 break;
  288.  
  289.  
  290.                           case GD_NoClickCheck: /* toggle */
  291.                                 noclick ^= TRUE;
  292.                                 SetClickDrive(noclick);
  293.                                 break;
  294.  
  295.                         }                                       /* switch (gadget->GadgetID) */
  296.                         break;
  297.  
  298.                   case REFRESHWINDOW:
  299.                         GT_BeginRefresh(MiscWnd);
  300.                         GT_EndRefresh(MiscWnd, TRUE);
  301.                         break;
  302.  
  303.                 }                                               /* switch (class) */
  304.  
  305.         }                                                       /* while more messages */
  306.  
  307.         return ROOT_OKAY;
  308. }
  309.         
  310.  
  311.  
  312.         
  313. /* show our misc window */
  314. BOOL
  315. ShowMiscWindow(void)
  316. {
  317.         if (!OpenMiscWindow())  /* like the name says... */
  318.         {
  319.                 InitMiscGadgets();
  320.                 wndsigflag = 1 << MiscWnd->UserPort->mp_SigBit;
  321.                 curwin = MiscWnd;
  322.                 HandleIDCMP = HandleMiscIDCMP;
  323.                 return TRUE;
  324.         }
  325.         CloseDownScreen();
  326.         return FALSE;
  327. }
  328.  
  329.  
  330.